A “library” is a collection of program resources. A resource in a library is also referred to as a “library”. The value of a library lies in its ability to be written once and re-used any number of times. Resources in the library can be used by multiple independent programs or sub-programs. The resources in the library can include already written code, subroutines, classes, type specifications and so on. If the code of the library is incorporated into the executable during compilation of the invoking program, the library is called a static linked library. Alternatively, during execution, an application may explicitly request to load a particular library resource. A library that is loaded and linked at runtime is called a dynamic linked library. An executable of an invoking program can be distributed independently of the dynamic library resource on which the program depends. When a library or library resource is distributed independently of the executable of the program that invokes the dynamic library resource, incompatibilities between the invoking program and the invoked program can arise.
Software versioning refers to assigning either version names or version numbers to states of computer software. Version numbers are typically assigned in increasing order corresponding to developments in the software.